/**
 * SQLite相关的代码
 * 目的是做跟vue-element-admin相似的那种api,方便更系统化的开发
 * 
 * 这里记录一下，太扎心了，我想要每次操作都打开关闭数据库，但是各种各样的问题，连打开数据库都是异步的，
 * 各种尝试阻塞都失败了，不阻塞的话操作又会抢先在打开操作。
 * 打开操作时间在100ms左右。那就直接打开一次，其他都不管了，太难了，再难也要封装一份自己的api。
 * 等以后忙完了，一定要看看源码，欠缺真的是太多了。
 */
// import delayms from 'delay.js'
import delayms from '@/utils/delay.js'

// 数据库相关的信息
const dbName = "elderly";
const dbPath = "_doc/elderly.db"


/**
 * 关闭数据库
 * @param {Object} DBName
 * @Date 2021-01-15
 * 反正自己用，数据库关闭失败就不管了
 */
function closeDB(DBName){
	var isOpen = plus.sqlite.isOpenDatabase({
		name: dbName,
		path: dbPath
	});
	if(isOpen){
		plus.sqlite.closeDatabase({
			name: DBName,
			success(e){},
			fail(e){
				plus.nativeUI.alert("数据库关闭失败，我也不知道为啥");  
			}
		})
	}
}
/**
 * 执行增删改语句
 * @param {Object} sql SQL语句
 * 还是判断下数据库是否打开，否则可能会有错误
 * 先做每次都关闭数据库吧，后面再改
 */
export function exSQL(sqlStr){
	return new Promise((resolve,reject) => {
		checkDBStatus();
		console.log("执行SQL:===",sqlStr)
		plus.sqlite.executeSql({
			name: dbName,  
			sql: sqlStr,  
			success: function(e) {  
				console.log(JSON.stringify(e));
				resolve(e);  
			},  
			fail: function(e) {  
				console.log("执行SQL失败:" + JSON.stringify(e));
				reject(e);
			}
		})
	})
}
/**
 * 查询SQL语句
 * @param {Object} sql 要查询的SQL语句
 */
export function selSQL(sqlStr){
	return new Promise((resolve,reject) => {
		checkDBStatus()
		console.log("查询SQL语句:===",sqlStr)
		plus.sqlite.selectSql({
			name: dbName,  
			sql: sqlStr,  
			success: function(e) {  
				console.log(JSON.stringify(e));
				resolve(e);  
			},  
			fail: function(e) {  
				console.log("查询SQL失败:" + JSON.stringify(e));
				reject(e);
			}
		})
	})
}
/**
 * 打开数据库
 * 可以在App.vue里写
 */
export function openDB(){
	if(plus.sqlite.isOpenDatabase({name:dbName,path:dbPath})){
		return;
	}
	plus.sqlite.openDatabase({
		name: dbName,
		path: dbPath,
		success: res => {},
		fail: err => {
			plus.nativeUI.alert("数据库打开失败！")
		}
	})
}
/**
 * 检查是否已经打开数据库，
 * 如果没有打开，则尝试打开数据库。
 * 记录：回调函数都是在本方法结束之后才运行，所以就无法实现，真的是只能靠猜
 */
export function checkDBStatus(){
	if(plus.sqlite.isOpenDatabase({name:dbName,path:dbPath})){
		return;
	}
	plus.sqlite.openDatabase({
		name: dbName,
		path: dbPath,
		success: res => {},
		fail: err => {plus.nativeUI.alert("数据库打开失败")}
	});
}


export function getUserInfo(){
	return uni.getStorageSync("mysecuritykey");
}